import 'package:flutter/widgets.dart';

class PickerLocalizations {
  final Locale locale;

  PickerLocalizations(this.locale);

  /// 提供一个便捷的静态方法，直接从 context 创建实例。
  /// 在 Widget 中可以这样使用: final l10n = PickerLocalizations.of(context);
  static PickerLocalizations of(BuildContext context) {
    return PickerLocalizations(Localizations.localeOf(context));
  }

  // [REFACTORED] 所有本地化字符串和格式化函数都集中在这里。
  // 结构: { '语言代码': { '资源键': '值' 或 (参数) => '格式化后的值' } }
  static final Map<String, Map<String, dynamic>> _localizedValues = {
    'en': {
      // 通用按钮
      'cancel': 'Cancel',
      'confirm': 'Confirm',
      // Picker 默认标题
      'editDateTitle': 'Edit Date',
      'filterDateTitle': 'Filter Time',
      'editTimeTitle': 'Edit Reminder Time',
      'startTimeTitle': 'Edit Start Time',
      'endTimeTitle': 'Edit End Time',
      // 日期单位后缀
      'year': 'Year',
      'month': 'Month',
      'day': 'Day',
      'hour': 'Hour',
      'minute': 'Minute',
      // EditDatePicker 中的标签
      'date': 'Date',
      'time': 'Time',
      // FilterDatePicker (Week) 中的标签
      'thisWeek': 'This Week',
      'week': (int weekNumber) => 'Week $weekNumber',
    },
    'zh': {
      // 通用按钮
      'cancel': '取消',
      'confirm': '确定',
      // Picker 默认标题
      'editDateTitle': '编辑日期',
      'filterDateTitle': '筛选时间',
      'editTimeTitle': '编辑提醒时间',
      'startTimeTitle': '编辑开始时间',
      'endTimeTitle': '编辑结束时间',
      // 日期单位后缀
      'year': '年',
      'month': '月',
      'day': '日',
      'hour': '时',
      'minute': '分',
      // EditDatePicker 中的标签
      'date': '日期',
      'time': '时刻',
      // FilterDatePicker (Week) 中的标签
      'thisWeek': '本周',
      'week': (int weekNumber) => '第$weekNumber周',
    },
    // 未来可以轻松添加更多语言...
    // 'ja': { ... }
  };

  /// 根据当前 locale 获取对应的资源 Map，如果语言不支持，则默认回退到英文。
  Map<String, dynamic> get _values {
    return _localizedValues[locale.languageCode] ?? _localizedValues['en']!;
  }

  // --- 公共 API ---
  // 通过这些 getters 和方法，UI 代码可以安全、清晰地获取本地化资源。

  // 通用按钮
  String get cancel => _values['cancel'];
  String get confirm => _values['confirm'];

  // Picker 默认标题
  String get editDateTitle => _values['editDateTitle'];
  String get filterDateTitle => _values['filterDateTitle'];
  String get editTimeTitle => _values['editTimeTitle'];
  String get startTimeTitle => _values['startTimeTitle'];
  String get endTimeTitle => _values['endTimeTitle'];

  // 日期单位后缀
  String get year => _values['year'];
  String get month => _values['month'];
  String get day => _values['day'];
  String get hour => _values['hour'];
  String get minute => _values['minute'];

  // EditDatePicker 中的标签
  String get date => _values['date'];
  String get time => _values['time'];

  // FilterDatePicker (Week) 中的标签
  String get thisWeek => _values['thisWeek'];
  String week(int weekNumber) => _values['week'](weekNumber);
}
